<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html dir="ltr" lang="en"><head>


<title>BeagleBoard/James - eLinux.org</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="MediaWiki 1.16.0">
<link rel="shortcut icon" href="http://elinux.org/favicon.ico">
<link rel="search" type="application/opensearchdescription+xml" href="http://elinux.org/opensearch_desc.php" title="eLinux.org (en)">
<link title="Creative Commons" type="application/rdf+xml" href="http://elinux.org/index.php?title=BeagleBoard/James&amp;action=creativecommons" rel="meta">
<link rel="copyright" href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt">
<link rel="alternate" type="application/atom+xml" title="eLinux.org Atom feed" href="http://elinux.org/index.php?title=Special:RecentChanges&amp;feed=atom">
<link rel="stylesheet" href="James_files/shared.css" media="screen">
<link rel="stylesheet" href="James_files/commonPrint.css" media="print">
<link rel="stylesheet" href="James_files/main.css" media="screen">
<!--[if lt IE 5.5000]><link rel="stylesheet" href="/skins/monobook/IE50Fixes.css?270" media="screen" /><![endif]-->
<!--[if IE 5.5000]><link rel="stylesheet" href="/skins/monobook/IE55Fixes.css?270" media="screen" /><![endif]-->
<!--[if IE 6]><link rel="stylesheet" href="/skins/monobook/IE60Fixes.css?270" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="/skins/monobook/IE70Fixes.css?270" media="screen" /><![endif]-->
<link rel="stylesheet" href="James_files/index_002.css">
<link rel="stylesheet" href="James_files/index_003.css" media="print">
<link rel="stylesheet" href="James_files/index_004.css">
<link rel="stylesheet" href="James_files/index.css">
<script>
var skin="monobook",
stylepath="/skins",
wgUrlProtocols="http\\:\\/\\/|https\\:\\/\\/|ftp\\:\\/\\/|irc\\:\\/\\/|gopher\\:\\/\\/|telnet\\:\\/\\/|nntp\\:\\/\\/|worldwind\\:\\/\\/|mailto\\:|news\\:|svn\\:\\/\\/",
wgArticlePath="/$1",
wgScriptPath="",
wgScriptExtension=".php",
wgScript="/index.php",
wgVariantArticlePath=false,
wgActionPaths={},
wgServer="http://elinux.org",
wgCanonicalNamespace="",
wgCanonicalSpecialPageName=false,
wgNamespaceNumber=0,
wgPageName="BeagleBoard/James",
wgTitle="BeagleBoard/James",
wgAction="view",
wgArticleId=3287,
wgIsArticle=true,
wgUserName=null,
wgUserGroups=null,
wgUserLanguage="en",
wgContentLanguage="en",
wgBreakFrames=false,
wgCurRevisionId=34861,
wgVersion="1.16.0",
wgEnableAPI=true,
wgEnableWriteAPI=true,
wgSeparatorTransformTable=["", ""],
wgDigitTransformTable=["", ""],
wgMainPageTitle="Main Page",
wgFormattedNamespaces={"-2": "Media", "-1": "Special", "0": "", "1": "Talk", "2": "User", "3": "User talk", "4": "eLinux.org", "5": "eLinux.org talk", "6": "File", "7": "File talk", "8": "MediaWiki", "9": "MediaWiki talk", "10": "Template", "11": "Template talk", "12": "Help", "13": "Help talk", "14": "Category", "15": "Category talk"},
wgNamespaceIds={"media": -2, "special": -1, "": 0, "talk": 1, "user": 2, "user_talk": 3, "elinux.org": 4, "elinux.org_talk": 5, "file": 6, "file_talk": 7, "mediawiki": 8, "mediawiki_talk": 9, "template": 10, "template_talk": 11, "help": 12, "help_talk": 13, "category": 14, "category_talk": 15, "image": 6, "image_talk": 7},
wgSiteName="eLinux.org",
wgCategories=["Linux", "BeagleBoard"],
wgRestrictionEdit=[],
wgRestrictionMove=[];
</script><script src="James_files/wikibits.js"></script>
<script src="James_files/ajax.js"></script>
<script src="James_files/index.php"></script>

</head><body class="mediawiki ltr ns-0 ns-subject page-BeagleBoard_James skin-monobook">
<div id="globalWrapper">
<div id="column-content"><div id="content">
	<a id="top"></a>
	<div id="siteNotice"><p>eLinux.org - Embedded Linux Wiki
</p></div>
	<h1 id="firstHeading" class="firstHeading">BeagleBoard/James</h1>
	<div id="bodyContent">
		<h3 id="siteSub">From eLinux.org</h3>
		<div id="contentSub"></div>
		<div id="jump-to-nav">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div>
		<!-- start content -->
<p><br>
<b>NOTE</b> This project has been terminated.<br>
I have found a similar project that is much further than mine. The project is called Amahi. It is a <a href="http://www.amahi.org/" class="external text" rel="nofollow">home server</a> providing <a href="http://www.amahi.org/" class="external text" rel="nofollow">media server</a> functionality.
It can be found at <a href="http://www.amahi.org/" class="external text" rel="nofollow">www.amahi.org</a>.<br>
Currently Amahi runs only on x86 and Marvell kirkwood (Sheevaplug and 
friends), but I guess running it on other hardware like beagleboard is 
not too difficult.
<br>
The distro used by Amahi is Fedora.
<br><br>
</p>
<table id="toc" class="toc"><tbody><tr><td><div id="toctitle"><h2>Contents</h2> <span class="toctoggle">[<a href="javascript:toggleToc()" class="internal" id="togglelink">hide</a>]</span></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Introduction"><span class="tocnumber">1</span> <span class="toctext">Introduction</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Latest_News"><span class="tocnumber">2</span> <span class="toctext">Latest News</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#James_Hardware"><span class="tocnumber">3</span> <span class="toctext">James Hardware</span></a></li>
<li class="toclevel-1 tocsection-4"><a href="#James_Software"><span class="tocnumber">4</span> <span class="toctext">James Software</span></a></li>
<li class="toclevel-1 tocsection-5"><a href="#James_Filesystem"><span class="tocnumber">5</span> <span class="toctext">James Filesystem</span></a></li>
<li class="toclevel-1 tocsection-6"><a href="#How_to_install"><span class="tocnumber">6</span> <span class="toctext">How to install</span></a>
<ul>
<li class="toclevel-2 tocsection-7"><a href="#Required_Hardware"><span class="tocnumber">6.1</span> <span class="toctext">Required Hardware</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#Getting_Started"><span class="tocnumber">6.2</span> <span class="toctext">Getting Started</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="#Configuring_the_image"><span class="tocnumber">6.3</span> <span class="toctext">Configuring the image</span></a></li>
<li class="toclevel-2 tocsection-10"><a href="#Optionally:_give_your_Beagleboard_a_fixed_IP_address"><span class="tocnumber">6.4</span> <span class="toctext">Optionally: give your Beagleboard a fixed IP address</span></a></li>
<li class="toclevel-2 tocsection-11"><a href="#Optionally:_install_Synergy"><span class="tocnumber">6.5</span> <span class="toctext">Optionally: install Synergy</span></a></li>
<li class="toclevel-2 tocsection-12"><a href="#Performing_an_automated_install"><span class="tocnumber">6.6</span> <span class="toctext">Performing an automated install</span></a></li>
<li class="toclevel-2 tocsection-13"><a href="#Sharing_your_data:_NFS"><span class="tocnumber">6.7</span> <span class="toctext">Sharing your data: NFS</span></a></li>
<li class="toclevel-2 tocsection-14"><a href="#Accessing_an_external_NFS_share_on_your_BeagleBoard"><span class="tocnumber">6.8</span> <span class="toctext">Accessing an external NFS share on your BeagleBoard</span></a></li>
<li class="toclevel-2 tocsection-15"><a href="#Sharing_your_data:_Samba"><span class="tocnumber">6.9</span> <span class="toctext">Sharing your data: Samba</span></a></li>
<li class="toclevel-2 tocsection-16"><a href="#Accessing_your_samba_share_from_windows"><span class="tocnumber">6.10</span> <span class="toctext">Accessing your samba share from windows</span></a></li>
<li class="toclevel-2 tocsection-17"><a href="#Accessing_your_samba_share_from_linux"><span class="tocnumber">6.11</span> <span class="toctext">Accessing your samba share from linux</span></a></li>
<li class="toclevel-2 tocsection-18"><a href="#Accessing_a_samba_share_on_your_BeagleBoard"><span class="tocnumber">6.12</span> <span class="toctext">Accessing a samba share on your BeagleBoard</span></a></li>
<li class="toclevel-2 tocsection-19"><a href="#Accessing_data_on_your_BeagleBoard_using_sshfs"><span class="tocnumber">6.13</span> <span class="toctext">Accessing data on your BeagleBoard using sshfs</span></a></li>
<li class="toclevel-2 tocsection-20"><a href="#Adding_WiFi_support"><span class="tocnumber">6.14</span> <span class="toctext">Adding WiFi support</span></a></li>
<li class="toclevel-2 tocsection-21"><a href="#Adding_WiiMote_support"><span class="tocnumber">6.15</span> <span class="toctext">Adding WiiMote support</span></a></li>
<li class="toclevel-2 tocsection-22"><a href="#Adding_support_for_a_remote_control"><span class="tocnumber">6.16</span> <span class="toctext">Adding support for a remote control</span></a></li>
<li class="toclevel-2 tocsection-23"><a href="#Using_a_webcam"><span class="tocnumber">6.17</span> <span class="toctext">Using a webcam</span></a>
<ul>
<li class="toclevel-3 tocsection-24"><a href="#vidcat"><span class="tocnumber">6.17.1</span> <span class="toctext">vidcat</span></a></li>
<li class="toclevel-3 tocsection-25"><a href="#motion"><span class="tocnumber">6.17.2</span> <span class="toctext">motion</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-26"><a href="#Audio_playback:_mpd"><span class="tocnumber">6.18</span> <span class="toctext">Audio playback: mpd</span></a></li>
<li class="toclevel-2 tocsection-27"><a href="#Grabbing_photos_from_a_PTP_enabled_camera"><span class="tocnumber">6.19</span> <span class="toctext">Grabbing photos from a PTP enabled camera</span></a></li>
<li class="toclevel-2 tocsection-28"><a href="#Ripping_an_audio_CD"><span class="tocnumber">6.20</span> <span class="toctext">Ripping an audio CD</span></a></li>
<li class="toclevel-2 tocsection-29"><a href="#Automatically_ripping_a_CD_using_ivman"><span class="tocnumber">6.21</span> <span class="toctext">Automatically ripping a CD using ivman</span></a></li>
<li class="toclevel-2 tocsection-30"><a href="#Transcoding_a_wav_file_to_mp3"><span class="tocnumber">6.22</span> <span class="toctext">Transcoding a wav file to mp3</span></a></li>
<li class="toclevel-2 tocsection-31"><a href="#UPnP_server:_mediatomb"><span class="tocnumber">6.23</span> <span class="toctext">UPnP server: mediatomb</span></a></li>
<li class="toclevel-2 tocsection-32"><a href="#Another_UPnP_server:_Coherence"><span class="tocnumber">6.24</span> <span class="toctext">Another UPnP server: Coherence</span></a></li>
<li class="toclevel-2 tocsection-33"><a href="#Downloading_torrents"><span class="tocnumber">6.25</span> <span class="toctext">Downloading torrents</span></a></li>
<li class="toclevel-2 tocsection-34"><a href="#PVR_demo"><span class="tocnumber">6.26</span> <span class="toctext">PVR demo</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-35"><a href="#Packages_that_are_present_but_still_need_some_work"><span class="tocnumber">7</span> <span class="toctext">Packages that are present but still need some work</span></a></li>
<li class="toclevel-1 tocsection-36"><a href="#Things_to_do"><span class="tocnumber">8</span> <span class="toctext">Things to do</span></a></li>
<li class="toclevel-1 tocsection-37"><a href="#Infrequently_Asked_Questions"><span class="tocnumber">9</span> <span class="toctext">Infrequently Asked Questions</span></a>
<ul>
<li class="toclevel-2 tocsection-38"><a href="#Where_are_the_frequently_asked_questions"><span class="tocnumber">9.1</span> <span class="toctext">Where are the frequently asked questions</span></a></li>
<li class="toclevel-2 tocsection-39"><a href="#Great.21_Where_can_I_download_this.3F_When_is_this_available.3F"><span class="tocnumber">9.2</span> <span class="toctext">Great! Where can I download this? When is this available?</span></a></li>
<li class="toclevel-2 tocsection-40"><a href="#Is_this_feasible.3F_It_looks_very_ambitious"><span class="tocnumber">9.3</span> <span class="toctext">Is this feasible? It looks very ambitious</span></a></li>
<li class="toclevel-2 tocsection-41"><a href="#Cool.2C_but_it_would_be_cooler_if_you_add_function_XXX"><span class="tocnumber">9.4</span> <span class="toctext">Cool, but it would be cooler if you add function XXX</span></a></li>
<li class="toclevel-2 tocsection-42"><a href="#Can_you_support_hardware_device_YYY"><span class="tocnumber">9.5</span> <span class="toctext">Can you support hardware device YYY</span></a></li>
<li class="toclevel-2 tocsection-43"><a href="#This_project_sounds_good.21_Can_I_help.3F"><span class="tocnumber">9.6</span> <span class="toctext">This project sounds good! Can I help?</span></a></li>
<li class="toclevel-2 tocsection-44"><a href="#Unanswered_questions.2C_suggestions.2C_remarks_etc"><span class="tocnumber">9.7</span> <span class="toctext">Unanswered questions, suggestions, remarks etc</span></a></li>
</ul>
</li>
</ul>
</td></tr></tbody></table><script>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<h1> <span class="mw-headline" id="Introduction"> Introduction </span></h1>
<p>James (acronym for Just A Miniature Entertainment System) is an application
providing a home entertainment solution. It is also called James as it aims
to be a global "butler" application providing various services.
What functionality is actually offered by James also depends on the actual
hardware present in the system.
</p><p>Rationale for calling it Miniature, is because the system will be small
in physical size (but not in functionality). Aim is also to reuse as much
open source software as possible.
</p><p>And actually entertainment system is a little bit of a misnomer. James will
provide all kind of home services, so it could also e.g. provide NAS
functionality or even a web server.
</p>
<h1> <span class="mw-headline" id="Latest_News"> Latest News </span></h1>
<p>A very nice person borrowed me a board! I don't know if you want to 
have your name exposed, but thank you very much; you know who you 
are&nbsp;:-)
</p><p>With this board I already managed to bring up several packages (and updated these to the latest version).<br>
The original plan was to build my own PVR (like I did with NSLU2); but 
the current plan is to investigate first if I can use mythTV.<br>
For wiimote support libwiimote and CWiid have been ported. Unfortunately
 the wintv prv usb2  drivers seem to have some issues with usb on 
angstrom. No idea yet what is wrong there.<br>
</p><p>ALso a lot of effort was spent on getting Coherence up and 
running. Coherence is a UPnP server that supports several backends which
 can e.g. serve FlickR content over UPnP.
</p><p>Furthermore an attempt was made to connect the webcam. 
Technically it works, but apparenty there are some USB related issues. 
The cam works fine under a regular linux system but on the Beagle over 
the OTG port apparently data is corrupted. I get a picture but with some
 colored striping in it. The same behaviour has also been reported by 
others, but a report from someone who has a revC board with working EHCI
 said that there webcams were functioning properly.
</p><p>Stay tuned for progress reports.
</p>
<h1> <span class="mw-headline" id="James_Hardware"> James Hardware </span></h1>
<p>Core of the James development will be a BeagleBoard, although the code should
be platform independent. BeagleBoard was chosen because it is very small
(although functionality wise it can be big).
</p><p>Additional hardware used during the development and for prototyping
</p>
<ul><li> <a href="http://www.p4c.philips.com/cgi-bin/dcbint/cpindex.pl?scy=NL&amp;slg=ENG&amp;sct=WEBCAMS_SU&amp;cat=PC_CAMERAS_CA&amp;session=20090130125811_195.241.226.180&amp;grp=MONITORS_PC_PERIPHERALS_GR&amp;ctn=PCVC680K/00&amp;mid=Link_ProductInformation&amp;hlt=Link_ProductInformation" class="external text" rel="nofollow">Philips PCVC680K</a> webcam
</li><li> <a href="http://www.toshibastorage.com/main.aspx?Path=StorageSolutions/1.8-inchHardDiskDrives/MK4007GAL" class="external text" rel="nofollow">Toshiba MK4007GAL</a> 1.8" hard disk with USB enclosure.
</li><li> <a href="http://www.sitecom.com/product.php?productname=USB+Internet+Phone&amp;productcode=IT-001&amp;productid=530&amp;subgroupid=2" class="external text" rel="nofollow">Sitecom IT-001</a> USB phone
</li><li> <a href="http://www.pertelian.com/" class="external text" rel="nofollow">Pertelian</a> X2040 Character based LCD display (4 lines, 20 columns)
</li><li> Perhaps touch screen/pixel based display
</li><li> GATEWAY OVU400002/00 Infrared receiver
</li><li> bluetooth dongle (I use a very small one, but most bluetooth dongels will work)
</li><li> Support for WII-mote (requires bluetooth)
</li><li> WiFi. I have successfully used a 3com 3crusb10075 USB dongle 
(zd1211 based), a Linksys WUSB54G and a Philips CPWUA054/00 USB dongle 
(both Prism54 based)
</li><li> <a href="http://www.hauppauge.com/site/products/data_pvrusb2.html" class="external text" rel="nofollow">Hauppauge WinTV PVR2 USB</a> analog TV receiver.
</li><li> A DVB-T receiver. (or maybe a DVB-S receiver) (to be obtained)
</li><li> PHILIPS  SPD3400CC USB CD/DVD drive.
</li><li> various USB hubs
</li><li> USB hard disk (Toshiba 40GB, 1.8")
</li></ul>
<p>Ideally of course would be to have an expansion board with features like
Bbluetooth, WiFi, IR, USB hub), but as such a board does not exist yet
initially the system will use standard USB components (although may be
with the cover removed and mounted together). Aim is to select small
components.
As I am not a skilled hardware developer, creating an expansion board is
outside my capabilities.
</p>
<h1> <span class="mw-headline" id="James_Software"> James Software </span></h1>
<p>As written above James will be open source and will use open source as much
as possible. Actually the programming effort will be mainly porting open
source applications (with the associated debugging and problem fixing) and
writing the UI software.
For UI the idea is to use something web based. That would allow controlling
the device locally, but also remote.
</p><p>Software functionality on James is the following:
</p>
<ul><li> Personal Video Recorder (PVR): see <a href="http://www.dse.nl/%7Emeulenbr/pvr/pvr.html" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/pvr/pvr.html</a> for some documentation and access to a prototype running on ARM
</li><li> Security functionality (motion pacakge)
</li><li> Photo retrieval from digital camera (both mass storage and ptp; mtp&nbsp;?)
</li><li> Audio grabbing from CD
</li><li> writing of CD/DVD (e.g. cdrecord)
</li><li> File server/NAS (samba/swat)
</li><li> uPnP server
</li><li> PBX functionality (asterisk)
</li><li> Media rendering (mplayer?), also from USB/CD/DVD if present (NSLU2 prototype only has mp3 playback as there is no video out.
</li><li> Bluetooth headphone (bluez a2dp profile)
</li><li> Internet telephony preferably with camera support (SIP based; probably EKIGA
</li><li> Maybe: uPnP playback
</li><li> Maybe: interface with GSM phone (e.g. using the gsm as a remote control using bluetooth)
</li></ul>
<p>Supporting software:
</p>
<ul><li> For wii-mote (CWiid (includes libwiimote)) Already demonstrated on eeePC under debian by me. See <a href="http://wiki.eeeuser.com/howto:wiimote" class="external text" rel="nofollow">this page</a> on <a href="http://wiki.eeeuser.com/" class="external text" rel="nofollow">wiki.eeeusoer.com</a> on what I did there.
</li><li> Lirc (for remote control) (did that already on NSLU2)
</li><li> Web server for serving the UI (The current demo uses out-of-the-box apache2 with php)
</li><li> Web browser for displaying the UI locally (not on NSLU2 as it has no display).
</li></ul>
<p>UI of the NLSU2 implementaion was done with html, javascript, css 
stylesheets, php and some self-written cgi scripts.
It might be that for the next version I'll move to flash. I am planning 
to make a small prototype, but due to other things I did not get to this
 yet.
</p>
<h1> <span class="mw-headline" id="James_Filesystem"> James Filesystem </span></h1>
<p>James has no specific requirements on the filesystem. For development
 and testing I used a standard generated Angstrom image (see next 
section) with a 1GB ext3 filesystem.
</p><p>James deals with multimedia content. Of course on a 1GB partition
 you cannot store that much multimedia data. Therefore I use a directory
 /media/content in this description to refer to the location of the 
multimedia content. By doing so you can easily mount another partition 
or e.g. an external USB hard disk or flash disk on this directory. But 
of course if you want to you can also keep /media on your SD card. And 
of course it is also possible to use a different directory to store the 
multimedia content as you see fit. Just use the directory where you 
stored the data instead of /media/content.
</p>
<h1> <span class="mw-headline" id="How_to_install"> How to install </span></h1>
<p>As James is still in the process of being developed, there is no 
automated install or precooked image or something like that. Meanwhile 
as a starter I have listed all steps I had to undertake with my 
hardware. If you are following the steps below and find things that are 
unclear or work out different for you (e.g because you have different 
hardware, please update these instructions.
</p><p>Generally there is no strict need to execute all steps in the 
order I gave. Most of the things are pretty independent of each other. I
 just listed the steps in the order I executed them. If there are 
dependencies that I am aware of, I tried to list them.
</p>
<h2> <span class="mw-headline" id="Required_Hardware"> Required Hardware </span></h2>
<p>In order to get started you at least need the following hardware:
</p>
<ul><li> beagle board. rev B is assumed, with a 5V power brick
</li><li> empty SD card, 1GB or larger
</li><li> serial connection to your beagle
</li><li> USB OTG cable
</li><li> A USB hub. The beagle is not powerful enough to power most USB devices.
</li><li> USB network interface to your beagle (wired is recommended, but if you know what you are doing you can
</li></ul>
<p>also use a wireless adapter. Setting up a wireless dongle is outside the scope of this document. The USB
network interface is connected to the hub
</p>
<ul><li> a working internet connection.
</li></ul>
<h2> <span class="mw-headline" id="Getting_Started"> Getting Started </span></h2>
<p>The simplest way to get started is by using a pre-generated image. For that download the files <a href="http://amethyst.openembedded.net/%7Ekoen/beaglecontest/james-image-beagleboard-sd.img.gz" class="external free" rel="nofollow">http://amethyst.openembedded.net/~koen/beaglecontest/james-image-beagleboard-sd.img.gz</a> and <a href="http://amethyst.openembedded.net/%7Ekoen/beaglecontest/james-image-beagleboard.tar.bz2" class="external free" rel="nofollow">http://amethyst.openembedded.net/~koen/beaglecontest/james-image-beagleboard.tar.bz2</a> and skip the next paragraph on making your own image.
</p><p>If the links above are not available any more or if you want to 
be in full control, generate yor own image using Koen's image builder at
 <a href="http://amethyst.openembedded.net/%7Ekoen/narcissus/" class="external free" rel="nofollow">http://amethyst.openembedded.net/~koen/narcissus/</a>. To do so perform the following steps (not neededif you use the pre-generated image)
In the machine section select beagleboard. From the options select: Base system: extended, X11 window
managers: Enlightenment. Development packages: Busybox replacements, Additional packages: All kernel
modules, alsa utils, apache, ntpdate. If you want more packages to be installed you can select those too. (e.g.
if you have a WiFi dongle you might want to select wireleess-tools). mplayer might also be handy but can
always be installed later on through the command opkg install mplayer
<br>
Give the image a name (let's take james in this example, but you must 
pick your own name, choose whatever
you want or whatever is generated for you).
hit "build me" and wait (could be a few minutes) for the image to be 
generated. If you miss a package that is also not that dramatic, as it 
is always possible to install things later on. After that 
</p>
<ul><li> download the james image for beagleboard (this will give you a file James-image-beagleboard.tar.bz2)
</li><li> downlaod the raw SD card image.(this will give you a file James-image-beagleboard-sd.img.gz).
</li></ul>
<p><br>
With your image either generated or the pregenerated one, perform the following steps:
</p>
<ul><li> insert an empty SD card (at least 1GB) into a card reader in your linux desktop system
</li><li> do a dmesg | tail to find out the name of the device. In the subsequent lines I will assume it is
</li></ul>
<p>/dev/sdf, but it will probably be different for you. Use the name from dmesg |tail and NOT /dev/sdf when
entering the commands.
</p>
<ul><li> gunzip james-image-beagleboard-sd.img.gz
</li><li> sudo dd if=james-image-beagleboard-sd.img of=/dev/sdf bs=1M
</li><li> grab a coffee as the command above will take some time. How much depends on the speed of your card. For me it took 3 minutes.
</li><li> sudo mount /dev/sdf2 /mnt
</li><li> cd /mnt
</li><li> sudo tar xvfj .../james-image-beagleboard.tar.bz2
</li><li> here ... is the path to your James-image-beagleboard.tar.bz2 file. Grab a second cup of coffee as this
</li></ul>
<p>again takes some time. Only difference is that at least this time you'll see progress. When done continue
with:
</p>
<ul><li> cd /
</li><li> sudo umount /dev/sdf2 (this again takes some time)
</li><li> sync (just to be safe)
</li><li> and to be safer: verify that the light of your SD card writer is not indicating any more that it is
</li></ul>
<p>writing and perhaps wait one more minute. If booting the image fails often the case is that not all data
is present on the SD card
</p>
<ul><li> insert the card in your beagle and power the beagle.
</li><li> if you want to you can interrupt u-boot by pressing space and 
set the videomode (e.g by issueing the commands 'setenv optargs 
omapfb.video_mode=1280x720MR-24@60' and "saveenv' (without the quotes)
</li><li> have you had enough coffee? if not, grab another cup. All kind of things will be installed. This takes
</li></ul>
<p>quite some time. Especially the loading of the kernel modules takes lots of time.You can follow the
progress on your serial port. Note that this only occurs one (on first use).
Later boots will be at normal speed (less than a minute).
</p><p>BTW: when booting error messages like "uncorrectable error&nbsp;: &lt;3&gt;end_request: I/O error, dev mtdblock0,
sector 0" can be ignored.
</p>
<h2> <span class="mw-headline" id="Configuring_the_image"> Configuring the image </span></h2>
<p>I have a pegasus based USB to ethernet dongle. In the kernel the 
driver for a pegasus dongle is a module. And for some reason the dongle 
does not get an IP address while booting. Unplugging and replugging the 
dongle works, but is not very convenient.
If you also have a pegasus based USB to ethernet dongle you can avoid 
this by issueing
the following commands on a console on your beagle:
</p>
<ul><li> echo pegasus &gt;/etc/modutils/pegasus
</li><li> /usr/sbin/update-modules
</li></ul>
<p>After that the module will be loaded before the IP addresses are 
assigned and the dongle will get an IP address during bootup. You might 
want to reboot if your dongle requires that you issue the previous two 
lines.
</p><p>Next you want to create a /media directory and optionally 
populate it with some multimedia content. Creating the directory is dony
 by:
</p>
<ul><li> mkdir /media/content
</li></ul>
<p>And update your package list by issueing the command:
</p>
<ul><li> opkg update
</li></ul>
<h2> <span class="mw-headline" id="Optionally:_give_your_Beagleboard_a_fixed_IP_address"> Optionally: give your Beagleboard a fixed IP address </span></h2>
<p>For James the beagle will also act as a server. For that it is very 
convenient if the beagle has a fixed address (or you have to use 
something like dyndns or configure a DHCP reservation in your router).
</p><p>In order to give the Beagle a fixed IP address you should edit the file /etc/network/interfaces and replace the line:
</p>
<pre>iface eth0 inet dhcp
</pre>
<p>with something like:
</p>
<pre>iface eth0 inet static
       address 192.168.1.230
       netmask 255.255.255.0
       network 192.168.1.0
       gateway 192.168.1.1
</pre>
<p>Also in order to have DNS working create/edit the file /etc/resolv.conf. You should add lines like:
</p>
<pre>nameserver 192.168.1.1
</pre>
<p>You can have several lines specifying name servers in the file. Of 
course you should use the addresses of whatever DNS server your use.
</p>
<h2> <span class="mw-headline" id="Optionally:_install_Synergy"> Optionally: install Synergy </span></h2>
<p>If you are like me and do not want to clutter your desk with multiple
 keyboards it is a good idea to install Synergy. Synergy is a software 
application that can be used to share the keyboard and mouse between 
multiple computers.
</p><p>Let us assume that your keyboard is connected to your linux 
system and that you want to use that keyboard also with your beagle. The
 linux system then acts as the server system, and the beagle system is 
the client system. Both systems require that X11 is running and must be 
connected to the ethernet. Let us assume that both systems have their 
own display and that the linux display is at the left side and the 
beagle display is located to the right.
</p><p>In order to share the keyboard you need to install synergy on 
both systems. For beagle synergy is in the feeds and can be installed 
with 'opkg install synergy'. For your unix system your milage may vary. 
It may be that your distribution supports synergy. If not you need to 
download it from <a href="http://synergy2.sourceforge.net/" class="external free" rel="nofollow">http://synergy2.sourceforge.net/</a>
 and install it yourself. There is one potential caveat. Synergy does 
not out of the box compile with gcc 4.3. If your system has gcc 4.3 you 
can patch the synergy sources with <a href="http://elinux.org/images/b/b2/Synergy-1.3.1-gcc-4.3.patch" class="internal" title="Synergy-1.3.1-gcc-4.3.patch"> this patch</a>.
</p><p>To get things running you need to create a file synergy.conf. 
Assuming the host names of your systems are linux and beagle, the file 
looks like:
</p>
<pre>   section: screens
      linux:
      beagle:
   end
   section: links
      linux:
          right = beagle
      beagle:
          left = linux
   end
</pre>
<p>Of course if the names of your systems are different or if the 
location of your monitors is different, you need to change the file.
</p><p>Store this file under the name 'synergy.conf' on the server system. Then on the server system run: 
</p>
<pre>synergys -f --config synergy.conf
</pre>
<p>and on the client system run:
</p>
<pre>synergyc -f server-host-name
</pre>
<p>If the server host name is not available you can also use the server IP address.<br>
If on the beagle you get an error that it cannot open the display try as command:
</p>
<pre>DISPLAY=:0.0 synergyc -f server-host-name
</pre>
<p>After doing so, if you move the cursor to the right of the linux 
screen it will automagically appear at the left side of your beagle 
screen, and of course if you them move to the left again your cursor 
will go to the linux screen. Keys will also be redirected to the screen 
in which the cursor is.
</p><p>(for the technically interested: what happens is that the server 
detects that the mouse is on the edge of the screen and if that happens 
it will pass the mouse events and key presses to the client at that side
 over TCP/IP).
</p><p>If you want to autostart xynergyc when starting your system you can create a file /etc/X11/Xinit.d/99Synergy with contents:
</p>
<pre>#!/bin/sh
/usr/bin/synergyc server-hostname
</pre>
<p>After that do a 'chmod 755/etc/X11/Xinit.d/99Synergy' to make the file executable.
</p>
<h2> <span class="mw-headline" id="Performing_an_automated_install"> Performing an automated install </span></h2>
<p>It is possible to install all James packages automatically. If that 
is what you want you should perform the steps mentioned in this section 
and skip the subsequent installation sections (although you might want 
to read them to learn how to configure and control the software that is 
installed). If you prefer to stay in control though, you want to skip 
this section and cherry-pick whatever parts you prefer from the 
subsequent sections.
</p><p>Beware that the automated installer is still a work in progress. 
At this moment you still need to do some things manually. Also the 
installer script does not configure most programs for automatically 
starting. I haven't decided yet if this should be added in the installer
 or by the package itself. Some packages like mpd do automatically 
startup on boot though.
</p><p>For the automatic install issue the following steps:
</p>
<ul><li> create and boot a kernel as explained above. Use a storage 
device of at least 1GB and make sure your beagle is onnected to internet
</li><li> login into your beagle
</li><li> wget <a href="http://www.dse.nl/%7Emeulenbr/james/james-install" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/james/james-install</a>
</li><li> optionally review the file james-install to see if you agree 
with the contents and to verify that it does not do anything you do not 
want
</li><li> sh james-install
</li></ul>
<p>Now the installation starts. You'll see the various packages being 
downloaded and installed. This will take a substantial time. The actual 
time depends on your download speed an on how busy the package server 
is. As you've probably had enough coffee by now, you might want to grab 
something else&nbsp;:-) Of course you can also spent the time waiting on
 reading the remainder of this page.
</p><p>If the automated install fails for some reason you have to 
interrupt it or it stalls for a long time, it should be safe to stop the
 install and restart it.
</p><p>After doing the automated install you can:
</p>
<ul><li> connect your ptp digital camera; the beagle will then automatically transfer the pictures on it (no erasing of pictures)
</li><li> manually control your camera and even remotely take pictures using gphoto2
</li><li> After editing /etc/mpd.conf: play music that is on the beagle 
using mpd, running gmpc on the beagle or another pc on your network
</li><li> manually rip CDs using cdstatus. See the section on cdstatus for more info.
</li><li> set up automated ripping of CDs. See the section on automated ripping using ivman
</li><li> manually encode wav files to mp3's using lame (see lame section on details)
</li><li> downloading files using rtorrent
</li><li> share media content on your beagle to any DLNA/UPnP client 
device (e.g. a Nokia N810 mobile phone, or a hardware digital media 
adapter or UPnP audio client using mediatomb
</li><li> share media content on your beagle or external flickr photos, 
youtube video's, lolcats, internet radio etc etc using the Coherence 
UPnP server
</li><li> use a wiimote to control your X11 cursor (requires wii, sensor
 bar and bluetooth dongle, see wiimote /cwiid section on configuration
</li><li> use a remote control in your own apps or bind them to specific actions. See section on lirc.
</li><li> use w3cat to capture pictures from your webcam
</li><li> use motion to set up motion detection. Note that this did not work too well on my OTG port. I suspect a MUSB driver issue.
</li><li> play with the PVR demo. You can do so by browsing to your 
beagle. A description of the design of the PVR and instructions to 
operate the demo can be found at: <a href="http://www.dse.nl/%7Emeulenbr/pvr/pvr.html" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/pvr/pvr.html</a>
</li></ul>
<p>Note: if you have connected a monitor to your beagle it is also 
possible to show the PVR demo locally. Select a good display resolution 
(e.g. 1280x720MR-24@60) in u-boot and after booting start the midori web
 browser from enlightenment using 
</p>
<ul><li> midori <a href="http://127.0.0.1/" class="external free" rel="nofollow">http://127.0.0.1</a>
</li></ul>
<p>Or if you want to start from your serial port or an ssh session you can start midori with:
</p>
<ul><li> DISPLAY=:0.0 midori <a href="http://127.0.0.1/" class="external free" rel="nofollow">http://127.0.0.1</a>
</li></ul>
<p>Additional things that you can play with because they are installed, but that are not covered into this document are:
</p>
<ul><li> asterisk
</li><li> ekiga
</li></ul>
<p>NOTE: the preinstalled image is only updated at irregular intervals, 
so recent changes might not be in the preinstalled image yet.
</p>
<h2> <span class="mw-headline" id="Sharing_your_data:_NFS"> Sharing your data: NFS </span></h2>
<p>Of course it is nice to access the multimedia content of your beagle 
on another PC. There are two ways to do so. The first one is through NFS
 and is handled in this section. The second one is through Samba (SMB) 
and is covered in the next section.
</p><p>In order to get NFS running on your BeagleBoard you need a recent
 kernel (2.6.28 and 2.6.29 kernels from after march 4, 2009 probably 
qualify). 
Apart from that you need to install the following packages:
</p>
<ul><li> opkg install kernel-module-exportfs kernel-module-nfs-acl kernel-module-nfsd nfs-utils
</li></ul>
<p>You might need to insert the modules exportfs.ko, nfs_acl.ko, 
nfsd.ko. These live in /lib/modules. For 2.6.28 the commands to do so 
would be:
</p>
<ul><li> insmod /lib/modules/2.6.29-omap1/kernel/fs/exportfs/exportfs.ko
</li><li> insmod /lib/modules/2.6.29-omap1/kernel/fs/nfs_common/nfs_acl.ko
</li><li> insmod /lib/modules/2.6.29-omap1/kernel/fs/nfsd/nfsd.ko
</li><li> depmod -a
</li></ul>
<p>Then reboot
</p><p>Apart from that you need to make a file /etc/exports which contains the filesystem(s) to be exported.
A very simple example would be:
</p>
<ul><li> /home 192.168.1.0/255.255.255.0(rw)
</li></ul>
<p>This will export /home to all systems on the network 192.168.1.0.
</p><p>See a good nfs document for a description on options on how to further configure nfs exports. (or man exportfs on a linux box).
</p><p>If you modify /etc/exports, you do not need to reboot to adapt to that settings. Just issue the command:
</p>
<ul><li> exportfs -a
</li></ul>
<p>and your /etc/exports file will be reparsed and nfsd will update accordingly.
</p>
<h2> <span class="mw-headline" id="Accessing_an_external_NFS_share_on_your_BeagleBoard"> Accessing an external NFS share on your BeagleBoard </span></h2>
<p>If you want to access an external NFS share (e.g. on your linux PC) you need to install nfs-utils-client using the command
</p>
<ul><li> opkg install nfs-utils-client
</li></ul>
<p>After that you can mount a share exported by an external nfs server. 
E.g. if your server is 192.168.1.5 and the share is /home and you want 
to mount on /mnt on the beagle issue the command:
</p>
<ul><li> mount -t nfs 1921.68.1.5:/home /mnt
</li></ul>
<p>Of course you can also use the name of the server instead of the IP address.
</p><p>For automatically mounting the share above when your system boots you can add a line similar to the following one in /etc/fstab:
</p>
<ul><li> 192.168.1.5:/home    /mnt   nfs    rsize=8192,wsize=8192,timeo=14,intr
</li></ul>
<h2> <span class="mw-headline" id="Sharing_your_data:_Samba"> Sharing your data: Samba </span></h2>
<p>In order to install samba you need to
</p>
<ul><li> opkg install samba
</li></ul>
<p>The samba configuration is in /etc/samba/smb.conf. You probably want 
to review this file and modify it as you see fit. Use a good samba 
tutorial to help you with this (e.g. <a href="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/" class="external free" rel="nofollow">http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/</a> )
</p><p>E.g. if you want to give readonly access to /media/content with a sharename of media you need to add:
</p>
<pre>[media]
  path = /media/content
  guest ok = yes
  writable = no
</pre>
<p>A more user-friendly way to manage your samba configuration is through SWAT (the Samba Web Administration Tool).
In order to have swat installed you need to do the following:
</p>
<ul><li> opkg install xinetd
</li><li> opkg install swat
</li><li> create a file /etc/xinetd.d/swat with the following content:
</li></ul>
<pre># default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
#              to configure your Samba server. To use SWAT, \
#              connect to port 901 with your favorite web browser.
service swat
{
       port    = 901
       socket_type     = stream
       wait    = no
       only_from = localhost
       user    = root
       server  = /usr/sbin/swat
       log_on_failure  += USERID
       disable = no
}
</pre>
<p>If you want remote access you need to modify or comment out the only_from line.
</p><p>After installing swat you can manage your samba configuration through port 901. (<a href="http://localhost:901/" class="external free" rel="nofollow">http://localhost:901</a> on your slug; <a href="http:///" class="external free" rel="nofollow">http://</a>&lt;beagle
 ip address&gt;:901 if you want remote access. Note that you need to log
 in into swat and that you cannot log in with an empty password.
</p><p>See <a href="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/SWAT.html" class="external free" rel="nofollow">http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/SWAT.html</a> for info on swat.
</p><p>Note that if you change the samba settings you need to restart the server for the settings to take effect.
</p><p>Apart from installing samba, you might want to register the users that are allowed to use samba. This is done by 
</p>
<ul><li> smbpasswd -a user
</li></ul>
<p>where user is the user you want to add.
It prompts for the password for that user. Note that this password can be different from the linux password.
</p>
<h2> <span class="mw-headline" id="Accessing_your_samba_share_from_windows"> Accessing your samba share from windows </span></h2>
<p>To be written
</p>
<h2> <span class="mw-headline" id="Accessing_your_samba_share_from_linux"> Accessing your samba share from linux </span></h2>
<p>In order to access your samba share under linux your PC running linux
 need to have smbclient installed. How this is done depends on your 
distribution and is outside the scope of this page.
</p><p>After installing smbclient you can access your share with
</p>
<ul><li> smbclient -U root //192.168.1.230/media
</li></ul>
<p>This assumes that you want to access the data as user root. Also it assumes that your beagle is at 192.168.1.230.
</p><p>Another, more convenient way is by using your web browser. Just 
browse to smb://192.168.1.230 (or whatever the IP address of your beagle
 is)
</p><p>Mounting of a share can be done through:
</p>
<ul><li> mount -t cifs //server-ip/sharename  /mnt -o username=user,password=pass
</li></ul>
<p>user here is the name of a user that you added before with smbpasswd 
(and pass is the associated password). /mnt is the directory where you 
want to mount to.
</p><p>If you want to mount the samba share upon startup add the 
following to your /etc/fstab (on your client system, not on the beagle):
</p>
<ul><li> //server-ip/sharename  /mnt smbfs username=user,password=pass 0 0  
</li></ul>
<p>again substituting the right credentials, addresses and paths.
</p><p>Note: the first two methods (browsing and smbclient) can also be 
done if you allow anonymous access. I could not get mount to work with 
anonymous access.
</p><p>Btw: if you want to access an external samba share *from* your 
beagle board (e.g. on your windows PC) of course you can use the same 
commands.
</p>
<h2> <span class="mw-headline" id="Accessing_a_samba_share_on_your_BeagleBoard"> Accessing a samba share on your BeagleBoard </span></h2>
<p>Technically accessing a samba share on your BeatleBoard is similar as explained in the previous section.
However you need to install two packages.
</p><p>For getting smbclient you need:
</p>
<ul><li> opkg install samba
</li></ul>
<p>And for mount.cifs you need:
</p>
<ul><li> opkg install cifs
</li></ul>
<p>After that proceed as explained in the previous section.
</p>
<h2> <span class="mw-headline" id="Accessing_data_on_your_BeagleBoard_using_sshfs"> Accessing data on your BeagleBoard using sshfs </span></h2>
<p>Yet another way to access data on your beagleboard is through sshfs. 
This is a filesystem that uses ssh. The nice thing is that ssh is 
already present on your beagle and no changes on the beagle are needed, 
and that you can even access the filesystem securely from an external 
location. Disadvantage is that sshfs is somewhat limited w.r.t. 
security. If you have ssh access, sshfs will give you access to all 
files you have access to, whereas with nfs and samba you can decide 
which directories you want to export.
</p><p>sshfs does require some software to be installed on your host 
system (the system from which you want to access the beagle fs) though.
</p><p>On OpenSuse:
</p>
<ul><li> sudo zypper install sshfs
</li></ul>
<p>On Ubuntu and Debian:
</p>
<ul><li> sudo apt-get install sshfs
</li></ul>
<p>On Fedora Core and Red Hat:
</p>
<ul><li> see <a href="http://fedorasolved.org/server-solutions/sshfs" class="external free" rel="nofollow">http://fedorasolved.org/server-solutions/sshfs</a>
</li></ul>
<p>After installing sshfs you can mount your beagle filesystem through e.g.:
</p>
<ul><li> sshfs root@192.168.1.230:/ /mnt
</li></ul>
<p>Where 192.168.1.230 is your beagle. Of course you can also use other paths and users!
</p>
<h2> <span class="mw-headline" id="Adding_WiFi_support"> Adding WiFi support </span></h2>
<p>The modules for the WiFi dongles that are supported by Linux are 
already present in the system. However, most likely the firwmware is 
still missing. This firmware need to be placed in /lib/firmware before 
you can use your WiFi dongle.
</p><p>For ZD1211 based dongles the firmware can be found at <a href="http://sourceforge.net/project/showfiles.php?group_id=129083" class="external free" rel="nofollow">http://sourceforge.net/project/showfiles.php?group_id=129083</a>
This firmware supports the following wifi dongles: <a href="http://www.linuxwireless.org/en/users/Drivers/zd1211rw/devices" class="external free" rel="nofollow">http://www.linuxwireless.org/en/users/Drivers/zd1211rw/devices</a>.
</p><p>For prism54 based dongles the firmware can be found at <a href="http://wireless.kernel.org/en/users/Drivers/p54#firmware" class="external free" rel="nofollow">http://wireless.kernel.org/en/users/Drivers/p54#firmware</a>. This firmware supports the following devices: <a href="http://wireless.kernel.org/en/users/Devices/USB" class="external free" rel="nofollow">http://wireless.kernel.org/en/users/Devices/USB</a>
</p><p>Configuring your wifi is outside the scope of this document.
</p>
<h2> <span class="mw-headline" id="Adding_WiiMote_support"> Adding WiiMote support </span></h2>
<p>Using a WiiMote as a mouse replacement is easy. You need a bluetooth 
dongle, a wiimote and a sensor bar (you can use the one from your wii, 
but I just used a noname wireless sensor bar bought on Ebay. (Actually 
such a sensor bar is nothing more than a piece of plastic with a few IR 
leds, a switch, a battery compartment and maybe a few resistors.)
</p><p>Just perform the following actions:
</p>
<ul><li> opkg install cwiid
</li><li> insert the bluetooth dongle
</li><li> hciconfig hci0 up
</li><li> wminput -c ir_ptr
</li></ul>
<p>now follow the instructions to connect your wiimote to the dongle and
 use your wiimote as a mouse pointer. (do not forget to point in the 
direction of the sensor bar).
</p><p>For more information on how to configure wminput see <a href="http://abstrakraft.org/cwiid/wiki/wminput" class="external free" rel="nofollow">http://abstrakraft.org/cwiid/wiki/wminput</a>
</p><p>(btw: wminput assumes that the uinput driver is loaded, but if 
you use the standard kernel this is the case. If uinput is not there you
 need to load it using insmod uinput (probably after building it)).
</p>
<h2> <span class="mw-headline" id="Adding_support_for_a_remote_control"> Adding support for a remote control </span></h2>
<ul><li> opkg install lirc
</li></ul>
<p>To be updated
</p>
<h2> <span class="mw-headline" id="Using_a_webcam"> Using a webcam </span></h2>
<p>I have connected a Philips PCVC680K (Vesta Pro) USB webcam to my 
beagle. If the module pwc is present it will be loaded when you plug in 
the cam. The moudule will be there if you have chosen "all kernel 
modules" in the image builder. If not you can still get it by issueing 
the command 'opkg install kernel-module-pwc'
</p><p>After doing so I was able to play the video on a monitor connected to the beagle by issuing the command <br>
DISPLAY=:0.0 mplayer -tv width=320:height=240:driver=v4l2 -fps 15 tv:// <br>
on the serial console (if you are running from a terminal you can omit the DISPLAY=0:0 part.<br>
Note that I connected the webcam on the OTG port. This resulted in a 
picture with some colored striping. Apparently some data gets corrupted 
somewhere. As the same setup works flawless on various systems (x68, 
nslu2) with a regular usb host interface, I guess there is a bug in the 
OTG driver or a glitch in the hardware.
</p><p>Other webcams can be used in a similar fashion, but you probably need to adjust the width, height and fps commands for mplayer.
</p>
<h3> <span class="mw-headline" id="vidcat"> vidcat </span></h3>
<p>It is also possible to capture individual pictures from your webcam. 
You can use the program vidcat to do so. This program is part of the 
package w3cam and can be installed with 'opkg install w3cam'.
</p><p>vidcat is a little bit picky on its arguments. For my PCVC680K 
the command 'vidcat -p y -s 640x480 &gt; test.jpg' did the job for me.
If you get a message like:
</p>
<pre>VIDIOCMCAPTURE: Invalid argument
args: width=320 height=240 palette=4
Error: Can't get image
</pre>
<p>your parameters are probably incorrect.<br>
Btw you can use vidcat --help to get a list of possible options to vidcat.
</p>
<h3> <span class="mw-headline" id="motion"> motion </span></h3>
<p>Another application that is proven to work is motion (install with 
'opkg install motion'. This does support motion detection by taking a 
picture at regular intervals and comparing that picture with the 
previous one. If the differences between the pictures exceed a 
user-defined treshold the pictures are stored. That way the cam can be 
used to detect intruders. <br>
Unfortunately due to the random color stripes, this is not useful yet on Beagle revB hardware.<br>
More information on motion and how to configure it can be found at: <a href="http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome" class="external free" rel="nofollow">http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome</a>
</p>
<h2> <span class="mw-headline" id="Audio_playback:_mpd"> Audio playback: mpd </span></h2>
<p>Mpd is a daemon process that can play audio. It is a daemon only and 
it can be controlled remotely by a mpd client (e.g. gmpc). This client 
can run locally on the beagle but also remotely on another system. 
Actually you can even set things up in such a way that your audio player
 can be controlled over the internet.
</p><p>Installation of mpd can be done with:
</p>
<ul><li> opkg install mpd
</li></ul>
<p>Note: the latest version of MPD is not on the feed yet. For now you may download <a href="http://www.dse.nl/%7Emeulenbr/james/mpd_0.14.2-r3.1_armv7a.ipk" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/james/mpd_0.14.2-r3.1_armv7a.ipk</a> and install it manually (opkg install mpd_0.14.2-r3.1_armv7a.ipk)
</p><p>Installation of the gmpc client can be done with
</p>
<ul><li> opkg install gmpc
</li></ul>
<p>Before starting the client be sure to review and edit the file 
/etc/mpd.conf
Especially you want to modify the line starting with music_directory as 
this points to the location where your audio files are. Also if your 
beagle has a public IP address you might want to restrict access by 
modifying the bind_to_address line, which specifies what systems have 
access and/or install a password.
</p><p>More info on mpd can be found at: <a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki" class="external free" rel="nofollow">http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki</a>
</p>
<h2> <span class="mw-headline" id="Grabbing_photos_from_a_PTP_enabled_camera"> Grabbing photos from a PTP enabled camera </span></h2>
<p>If you have a PTP enabled digital photocamera, it is possible to automate the extraction of photos from
that camera. In order to do so perform the following steps:
</p>
<ul><li> opkg install gphoto2
</li></ul>
<p>Create a script photoripper. My script looks like:
</p>
<pre>#!/bin/sh

test "x$ACTION"&nbsp;!= "xadd" &amp;&amp; exit 0
test "x$SUBSYSTEM"&nbsp;!= "xusb_device" &amp;&amp; exit 0

if test -e "$DEVNAME"
then
  # SUBSYSTEM == "usb_device" implies that DEVNAME == "/dev/bus/usb/123/456"
  # Determine device ID and bus ID.
  dev="$(basename "$DEVNAME")"
  bus="$(basename "$(dirname "$DEVNAME")")"

  cd /home/root  # change this line if you want to download to a different directory.
  /usr/bin/gphoto2 --port usb:${bus},${dev} --get-all-files
else
  echo "photoripper: Given device named $DEVNAME not found." &gt;&gt;/tmp/photoripper.log
  exit 1
fi
</pre>
<p>Place this script in a directory of your choice. I've used /usr/local/bin (which need to be created
first), but you can put it in another location. Just adapt the path in the next two commands.
</p>
<ul><li> chmod 755 /usr/local/bin/photoripper
</li><li> /usr/lib/libgphoto2/print-camera-list udev-rules version 0.98 
script /usr/local/bin/photoripper &gt; 
/etc/udev/rules.d/90-libgphoto2.rules
</li></ul>
<p>This will start the photoripper script whenever you connect the camera to your system.
</p><p>Of course the script above is just my version. If desired you can use other gphoto2 options. E.g. you can
add the option --new to the gphoto2 command so only new files are downloaded. And if you are brave you
can even automatically remove the pictures from your camera after downloading them by adding a gphoto2
command with the option --delete-all-files. Note that you do this completely at your own responsibility.
Don't blame me if for wahtever reason you loose pictures!
</p>
<h2> <span class="mw-headline" id="Ripping_an_audio_CD"> Ripping an audio CD </span></h2>
<p>If you have an USB CD or DVD drive you can use it to rip audio CD's. 
James does that by using cdstatus. Advantage of cdstatus is that it can 
interface with CDDB. 
</p><p>You can install cdstatus through:
</p>
<ul><li> opkg install cdstatus
</li></ul>
<p>Ripping a CD can be done through the command:
</p>
<ul><li> cdstatus --cddb --drive /dev/sr0 --rip
</li></ul>
<p>Note that this command rips to wav files. cdstatus has some more 
options (e.g. specifying the destination directory). Issue 'cdstatus 
--help' to learn about them.
</p><p>The speed to rip a CD depends mostly on the audio extraction speed of your drive.
</p>
<h2> <span class="mw-headline" id="Automatically_ripping_a_CD_using_ivman"> Automatically ripping a CD using ivman </span></h2>
<p>It might be that you desire to automatically rip a CD when you insert
 it in the drive. This can be done by using the program ivman. In order 
to do so you should first install ivman:
</p>
<ul><li> opkg install ivman
</li></ul>
<p>Note: at the time of writing ivman is not yet in the feeds. If the 
command above fails please manually install and download the following 
files in the order given:<br>
<a href="http://www.dse.nl/%7Emeulenbr/james/pmount_0.9.18-r0.1_armv7a.ipk" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/james/pmount_0.9.18-r0.1_armv7a.ipk</a><br>
<a href="http://www.dse.nl/%7Emeulenbr/james/pmount-hal_0.9.18-r0.1_armv7a.ipk" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/james/pmount-hal_0.9.18-r0.1_armv7a.ipk</a><br>
<a href="http://www.dse.nl/%7Emeulenbr/james/ivman_0.6.14-r1.1_armv7a.ipk" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/james/ivman_0.6.14-r1.1_armv7a.ipk</a><br>
</p><p>After that edit the file /etc/ivman/IvmConfigActions.xml. Add the
 following text near the end (just above the tag 
&lt;/ivm:ActionsConfig&gt;
</p>
<pre>   &lt;ivm:Match name="hal.volume.disc.type" value="cd_rom"&gt;
       &lt;ivm:Match name="hal.volume.disc.has_audio" value="true"&gt;
           &lt;ivm:Match name="hal.volume.disc.has_data" value="false"&gt;
       &lt;ivm:Option name="exec" value="cd /media/content &gt;&amp;gt /usr/bin/cdstatus --cddb --drive '$hal.block.device$' --rip " /&gt;
           &lt;/ivm:Match&gt;
       &lt;/ivm:Match&gt;
   &lt;/ivm:Match&gt;
</pre>
<p>Of course you can replace /media/content with the path of your choice.
</p><p>You also might want to change IvmConfigBase.xml. There is a line there saying
</p>
<pre>   &lt;ivm:Option name="user" value="ivman" /&gt;
</pre>
<p>This specifies the user under which all ivman commands are run. In 
order to get things working you need to perform one of the following 
steps:
</p>
<ol><li> make sure /media/content is writable by user ivman and /dev/scd0 is readable by user ivman
</li><li> reolace the line with: &lt;ivm:Option name="user" value="root" /&gt; causing the code to run as root
</li><li> make cdstatus setuid root by issueing the command chmod 4711 /usr/bin/cdstatus
</li></ol>
<p>Then start ivman. After doing so if you insert an audio CD it will be
 ripped automatically to /media/content (or your directory if you 
changed it.<br>
Remember that cdstatus rips to wav files, so ripping a CD may give you 
up to 700 MB of data (so do not do this on an SD card that is almost 
full). <br>
</p><p>Note: on my beagle ripping a CD brings the rest of the system almost to a halt. Apparently a lot of time is used in I/O actions.
</p><p>Note2: ivman can also be very useful doing all kind of other 
things on device insertion/removal. See the file  
/etc/ivman/IvmConfigActions.xml for some examples.
</p>
<h2> <span class="mw-headline" id="Transcoding_a_wav_file_to_mp3"> Transcoding a wav file to mp3 </span></h2>
<p>Cdstatus gives wav files but probably you want mp3 files. This is easily being done by lame.
</p><p>You can install lampe through:
</p>
<ul><li> opkg install lame
</li></ul>
<p>Then you can encode a file using the command:
</p>
<ul><li> lame -h input.wav output.mp3
</li></ul>
<p>Handy trick:<br>
if you want to convert all files in a directory you can simply issue the command:
</p>
<ul><li> for i in *.wav;do lame -h $i `basename $i .wav`.mp3; done
</li></ul>
<p>And if you want to remove the wav file after that you can say:
</p>
<ul><li> for i in *.wav;do lame -h $i `basename $i .wav`.mp3 &amp;&amp; rm $i; done
</li></ul>
<p>Lame has options to control the bitrate, set mp3 tags etc. Use
</p>
<ul><li> lame --longhelp
</li></ul>
<p>to get an extensive list.
</p><p>Lame does not retrieve mp3 tags or so from CDDB<br>
Speed of lame is about twice the time of the track when ripping with -h 
and 128 kbit/s on an otherwise unused Beagle, so it would be nice to be 
able to use the DSP to transcode wav files.
</p>
<h2> <span class="mw-headline" id="UPnP_server:_mediatomb"> UPnP server: mediatomb </span></h2>
<p>If you have a UPnP client device like a TV with an embedded UPnP 
client, or a Digital Media Adapter or a UPnP audio client, or a phone 
with UPnP client functionality build in you are probably interested in 
having a UPnP server on your Beagle.<br>
As UPnP server James supports mediatomb. This is a server with a web based UI.
</p><p>Installation of mediatomb is done in the usual way:
</p>
<ul><li> opkg install mediatomb
</li></ul>
<p>After that you can run mediatomb on your beagle. You might want to 
check out the options of mediatomb (use mediatomb --help). E.g. you 
might want to fix the port that mediatomb uses. The default port is the 
first port after 49151 so most often 49152.<br>
Configuration settings can also be specified in ~/.mediatomb/config.xml<br>
See <a href="http://mediatomb.cc/" class="external free" rel="nofollow">http://mediatomb.cc/</a> for information on the syntax of config.xml and on general usage information.
</p><p>After mediatomb is running you can configure what contents is 
shared through the web interface. Just use a web browser and browse to 
the IP address:port number of your beagle (e.g. 192.168.0.10:49152 if 
192.168.0.10 is the address of your beagle).
</p><p>Note: I have never tried the transcoding features of mediatomb.
</p>
<h2> <span class="mw-headline" id="Another_UPnP_server:_Coherence"> Another UPnP server: Coherence </span></h2>
<p>When selecting a UPnP server there is another interesting candidate: 
Coherence. It does not have a fancy UI yet,but it has a very nice 
feature: it supports a variety of backends which make external (web) 
content available through UPnP. E.g. there is a backend to serve 
internet radio (iRadio). Yet another backend will serve FLickR pictures,
 while yet another one serves Youtube. And if you are a cat lover you 
definitely want to check out Lolcats!
</p><p>Installation is done through:
</p>
<ul><li> opkg install python-coherence
</li></ul>
<p>Beware: this will drag in a lot of other packages.
</p><p>Coherence configuration is stored in ~/.coherence. Info on Coherence and its configuration can be found at <a href="http://coherence.beebits.net/" class="external free" rel="nofollow">http://coherence.beebits.net/</a>
</p>
<h2> <span class="mw-headline" id="Downloading_torrents"> Downloading torrents </span></h2>
<p>The beagle, being a low power device is of course also a nice system 
to download torrents. rtorrent is a small and efficient tool to download
 torrents.
</p><p>Installation of rtorrent is done through:
</p>
<ul><li> opkg install rtorrent rtorrent-doc
</li></ul>
<p>In order to be able to suspend rtorrent and disconnect your terminal 
(especially useful when connecting to yur system using ssh) it is 
recommended also to install screen with:
</p>
<ul><li> opkg install screen screen-doc
</li></ul>
<p>Screen is a very nice application that will keep on running whenever 
you detach from the terminal. If you want to start rtorrent under screen
 you can type:
</p>
<ul><li> screen rtorrent
</li></ul>
<p>After that you can start whatever torrent you want to. 
</p><p>It is a good idea to first read the manpage for rtorrent. Leaving
 rtorrent can be done with ctrl-Q. Exiting screen can be done with 
ctrl-D, and if you want to detach from screen but keep rtorrent and 
screen running type ctrl-A d or ctrl-A ctrl-D. Further info on the key 
bindings of screen can be obtained by ctrl-A&nbsp;?
</p>
<h2> <span class="mw-headline" id="PVR_demo"> PVR demo </span></h2>
<p>Work is in progress to implement a personal video recorder (pvr) on 
the beagle. This code is already running on NSLU2, and has been ported 
to Beagle. However, unfortunatly my Beagle does not want to work with my
 Hauppauge USB TV card through the OTG port. Therefore the only thing 
available is the UI part. This can be downloaded and installed using
</p>
<ul><li> wget <a href="http://www.dse.nl/%7Emeulenbr/james/pvr.tar.gz" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/james/pvr.tar.gz</a>
</li><li> tar xvfz pvr.tar.gz
</li><li> rm pvr.tar.gz
</li><li> /etc/init.d/apache2 restart
</li></ul>
<p>Note that pvr.tar.gz contains absolute paths and will overwrite things like httpd.conf.
</p><p>A description of the design of the PVR and instructions to operate the demo can be found at: <a href="http://www.dse.nl/%7Emeulenbr/pvr/pvr.html" class="external free" rel="nofollow">http://www.dse.nl/~meulenbr/pvr/pvr.html</a>
</p><p>Note: if you have connected a monitor to your beagle it is also 
possible to show the UI locally. Select a good display resolution (e.g. 
1280x720MR-24@60) in u-boot and after booting start midori from 
enlightenment using 
</p>
<ul><li> midori <a href="http://127.0.0.1/" class="external free" rel="nofollow">http://127.0.0.1</a>
</li></ul>
<p>Or if you want to start from your serial port or an ssh session you can start midori with:
</p>
<ul><li> DISPLAY=:0.0 midori <a href="http://127.0.0.1/" class="external free" rel="nofollow">http://127.0.0.1</a>
</li></ul>
<h1> <span class="mw-headline" id="Packages_that_are_present_but_still_need_some_work"> Packages that are present but still need some work </span></h1>
<ul><li> asterisk (IP pbx): still need to look at how to integrate/use it
</li><li> ekiga (SIP client): requires testing
</li><li> LCD4Linux: works as expected, but it is not used yet to display James info.
</li><li> rtorrent: works, needs to be more automated to download torrents
</li><li> cups: haven't played with it yet
</li><li> gpsd and gps-utils: these are a little bit off-topic, but I 
would love to use the beagle with my bluetooth gps, need to peek into 
this.
</li></ul>
<h1> <span class="mw-headline" id="Things_to_do"> Things to do </span></h1>
<p>In no particular order:
</p>
<ul><li> More automated/user friendly install script
</li><li> newsreader/leechere (probably nzb based)
</li><li> better UI (perhaps using Wt)
</li><li> ampache?
</li><li> xmltv&nbsp;?
</li><li> upnp client (gstreamer?
</li><li> automatic import from mass storage
</li><li> fle manager&nbsp;? (phpexplorer?)
</li><li> photo slideshow application
</li><li> cd recording; I've made a package for cdrkit, but that has some issues and I have not had the time to find out what it is
</li><li> improve PVR and use remote control and/or move to mythtv.
</li><li> improve documentation and add sections for samba, nfs, ekiga and asterisk.
</li><li> work on optimisation. e.g. I would like to use e.g thpptd instead of apache. and maybe move to LXDE)
</li><li> support tux (www.kysoh.com)
</li><li> text to speech
</li></ul>
<h1> <span class="mw-headline" id="Infrequently_Asked_Questions"> Infrequently Asked Questions </span></h1>
<h3> <span class="mw-headline" id="Where_are_the_frequently_asked_questions"> Where are the frequently asked questions </span></h3>
<p>LOL, there are no frequently asked questions. This is so new that any
 question is infrequently asked (or not at all). This section is here to
 give answers to some of the things that might pop up while reading 
this.
</p>
<h3> <span class="mw-headline" id="Great.21_Where_can_I_download_this.3F_When_is_this_available.3F"> Great! Where can I download this? When is this available? </span></h3>
<p>This is work in progress. For now you can reproduce things using the steps outlined above.<br>
</p>
<h3> <span class="mw-headline" id="Is_this_feasible.3F_It_looks_very_ambitious"> Is this feasible? It looks very ambitious </span></h3>
<p>It is definitely ambitious. Then again a bit of ambition does not hurt.<br>
And feasible: I think it is, but only time will tell. A lot of the software
is available in the open source domain. I have quite some experience porting
software, and a lot of things I did before on
<a href="http://www.nslu2-linux.org/" class="external text" rel="nofollow">NSLU2</a> where I am
<a href="http://www.nslu2-linux.org/wiki/Profiles/EFfeM" class="external text" rel="nofollow">eFfeM</a>
</p><p>But... in the end only time will tell!
</p>
<h3> <span class="mw-headline" id="Cool.2C_but_it_would_be_cooler_if_you_add_function_XXX"> Cool, but it would be cooler if you add function XXX </span></h3>
<p>Could be. Feel free to bring XXX to my attention. If there is open source
software to support this function, please mention it. Depending on the
amount of effort needed and the potential benefit for others, I might pick
it up earlier or later.
</p>
<h3> <span class="mw-headline" id="Can_you_support_hardware_device_YYY"> Can you support hardware device YYY </span></h3>
<p>Depends. I try to make use of existing software as much as possible and try
to be device independent, so it might be supported already
(perhaps with a little effort).<br>
Then again this also depends on what kind of hardware it is. If it is
something nice I'd want myself, I might buy it. If not I might still
support it if someone borrows or donates me a piece of hardware to allow
testing, if I consider it to be of general use. Then again if your problem is
very specific you are probably on your own (although of course I am willing
to give some advice).
</p>
<h3> <span class="mw-headline" id="This_project_sounds_good.21_Can_I_help.3F"> This project sounds good! Can I help? </span></h3>
<p>Depends on your skills, competences and time.<br>
If you have hardware skills you could probably come up with a prototype for
an expansion board, instead of the hodge-podge of USB devices that I am
undoubtedly going to make.<br>
If you have mechanical skills you could come up with a casing proposal
(otherwise it'll probably be a shoe box project).<br>
If you are graphically skilled you could help defining the UI (I am
graphically challenged&nbsp;:-) ).<br>
And if you are a programmer you could port and test some of the packages
mentioned above.
</p>
<h3> <span class="mw-headline" id="Unanswered_questions.2C_suggestions.2C_remarks_etc"> Unanswered questions, suggestions, remarks etc </span></h3>
<p>If you have other questions, suggestions, remarks etc. feel free to add them below. I'll try to come up with answers.
</p>
<!-- 
NewPP limit report
Preprocessor node count: 175/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
-->

<!-- Saved in parser cache with key elinux:pcache:idhash:3287-0!1!0!!en!2!edit=0 and timestamp 20110330134206 -->
<div class="printfooter">
Retrieved from "<a href="http://elinux.org/BeagleBoard/James">http://elinux.org/BeagleBoard/James</a>"</div>
		<div id="catlinks" class="catlinks"><div id="mw-normal-catlinks"><a href="http://elinux.org/Special:Categories" title="Special:Categories">Categories</a>: <span dir="ltr"><a href="http://elinux.org/Category:Linux" title="Category:Linux">Linux</a></span> | <span dir="ltr"><a href="http://elinux.org/Category:BeagleBoard" title="Category:BeagleBoard">BeagleBoard</a></span></div></div>		<!-- end content -->
				<div class="visualClear"></div>
	</div>
</div></div>
<div id="column-one">
	<div id="p-cactions" class="portlet">
		<h5>Views</h5>
		<div class="pBody">
			<ul>
				 <li id="ca-nstab-main" class="selected"><a href="http://elinux.org/BeagleBoard/James" title="View the content page [alt-shift-c]" accesskey="c">Page</a></li>
				 <li id="ca-talk" class="new"><a href="http://elinux.org/index.php?title=Talk:BeagleBoard/James&amp;action=edit&amp;redlink=1" title="Discussion about the content page [alt-shift-t]" accesskey="t">Discussion</a></li>
				 <li id="ca-viewsource"><a href="http://elinux.org/index.php?title=BeagleBoard/James&amp;action=edit" title="This page is protected.
You can view its source [alt-shift-e]" accesskey="e">View source</a></li>
				 <li id="ca-history"><a href="http://elinux.org/index.php?title=BeagleBoard/James&amp;action=history" title="Past revisions of this page [alt-shift-h]" accesskey="h">History</a></li>
			</ul>
		</div>
	</div>
	<div class="portlet" id="p-personal">
		<h5>Personal tools</h5>
		<div class="pBody">
			<ul>
				<li id="pt-login"><a href="http://elinux.org/index.php?title=Special:UserLogin&amp;returnto=BeagleBoard/James" title="You are encouraged to log in; however, it is not mandatory [alt-shift-o]" accesskey="o">Log in / create account</a></li>
			</ul>
		</div>
	</div>
	<div class="portlet" id="p-logo">
		<a style="background-image: url(&quot;/images/3/34/Final_penguin_only_color.jpg&quot;);" href="http://elinux.org/Main_Page" title="Visit the main page"></a>
	</div>
	<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
	<div class="generated-sidebar portlet" id="p-navigation">
		<h5>Navigation</h5>
		<div class="pBody">
			<ul>
				<li id="n-mainpage"><a href="http://elinux.org/Main_Page" title="Visit the main page [alt-shift-z]" accesskey="z">Main Page</a></li>
				<li id="n-portal"><a href="http://elinux.org/eLinux.org:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li>
				<li id="n-currentevents"><a href="http://elinux.org/eLinux.org:Current_events" title="Find background information on current events">Current events</a></li>
				<li id="n-recentchanges"><a href="http://elinux.org/Special:RecentChanges" title="The list of recent changes in the wiki [alt-shift-r]" accesskey="r">Recent changes</a></li>
				<li id="n-help"><a href="http://elinux.org/Help:Contents" title="The place to find out">Help</a></li>
				<li id="n-Volunteering"><a href="http://elinux.org/Sitesupport-url">Volunteering</a></li>
				<li id="n-Popular-Pages"><a href="http://elinux.org/Special:PopularPages">Popular Pages</a></li>
				<li id="n-Who.27s-Online"><a href="http://elinux.org/Special:WhosOnline">Who's Online</a></li>
			</ul>
		</div>
	</div>
	<div id="p-search" class="portlet">
		<h5><label for="searchInput">Search</label></h5>
		<div id="searchBody" class="pBody">
			<form action="/index.php" id="searchform">
				<input name="title" value="Special:Search" type="hidden">
				<input id="searchInput" title="Search eLinux.org" accesskey="f" name="search" type="search">
				<input name="go" class="searchButton" id="searchGoButton" value="Go" title="Go to a page with this exact name if exists" type="submit">&nbsp;
				<input name="fulltext" class="searchButton" id="mw-searchButton" value="Search" title="Search the pages for this text" type="submit">
			</form>
		</div>
	</div>
	<div class="portlet" id="p-tb">
		<h5>Toolbox</h5>
		<div class="pBody">
			<ul>
				<li id="t-whatlinkshere"><a href="http://elinux.org/Special:WhatLinksHere/BeagleBoard/James" title="List of all wiki pages that link here [alt-shift-j]" accesskey="j">What links here</a></li>
				<li id="t-recentchangeslinked"><a href="http://elinux.org/Special:RecentChangesLinked/BeagleBoard/James" title="Recent changes in pages linked from this page [alt-shift-k]" accesskey="k">Related changes</a></li>
<li id="t-specialpages"><a href="http://elinux.org/Special:SpecialPages" title="List of all special pages [alt-shift-q]" accesskey="q">Special pages</a></li>
				<li id="t-print"><a href="http://elinux.org/index.php?title=BeagleBoard/James&amp;printable=yes" rel="alternate" title="Printable version of this page [alt-shift-p]" accesskey="p">Printable version</a></li>				<li id="t-permalink"><a href="http://elinux.org/index.php?title=BeagleBoard/James&amp;oldid=34861" title="Permanent link to this revision of the page">Permanent link</a></li>			</ul>
		</div>
	</div>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer">
	<div id="f-poweredbyico"><a href="http://www.mediawiki.org/"><img src="James_files/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31"></a></div>
	<div id="f-copyrightico"><a href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"><img src="James_files/gnu-fdl.png" alt="GNU Free Documentation License 1.2" width="88" height="31"></a></div>
	<ul id="f-list">
		<li id="lastmod"> This page was last modified on 14 February 2011, at 07:55.</li>
		<li id="viewcount">This page has been accessed 33,460 times.</li>
		<li id="copyright">Content is available under <a href="http://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" class="external ">GNU Free Documentation License 1.2</a>.</li>
		<li id="privacy"><a href="http://elinux.org/eLinux.org:Privacy_policy" title="eLinux.org:Privacy policy">Privacy policy</a></li>
		<li id="about"><a href="http://elinux.org/eLinux.org:About" title="eLinux.org:About">About eLinux.org</a></li>
		<li id="disclaimer"><a href="http://elinux.org/eLinux.org:General_disclaimer" title="eLinux.org:General disclaimer">Disclaimers</a></li>
	</ul>
</div>
</div>

<script>if (window.runOnloadHook) runOnloadHook();</script>
<!-- Served in 0.085 secs. --></body></html>